Meeting rooms II¶
Time: O(NlogN); Space: O(N); medium
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],…] (si < ei), find the minimum number of conference rooms required.
Example 1:
Input: intervals: [0, 30],[5, 10],[15, 20]
Output: 2
Example 2:
Input: intervals: [7,10], [2,4]
Output: 1
Note:
Input types have been changed on April 15, 2019.
Please reset to default code definition to get new method signature.
[1]:
class Interval:
"""
Definition for an interval
"""
def __init__(self, start=0, end=0):
self.start = start
self.end = end
[3]:
class Solution1(object):
def minMeetingRooms(self, intervals):
'''
:type intervals: [Interval[]]
:rtype: bool
'''
starts, ends = [], []
for i in intervals:
starts.append(i.start)
ends.append(i.end)
starts.sort()
ends.sort()
s, e = 0, 0
min_rooms, cnt_rooms = 0, 0
while s < len(starts):
if starts[s] < ends[e]:
cnt_rooms += 1 # Acquire a room.
# Update the min number of rooms.
min_rooms = max(min_rooms, cnt_rooms)
s += 1
else:
cnt_rooms -= 1 # Release a room.
e += 1
return min_rooms
[4]:
s = Solution1()
a1 = Interval(0, 30)
a2 = Interval(5, 10)
a3 = Interval(15, 20)
assert s.minMeetingRooms([a1, a2, a3]) == 2
a1 = Interval(7,10)
a2 = Interval(2, 4)
assert s.minMeetingRooms([a1, a2, a3]) == 1